AzerothCore Server-Konsole & Admin-Zugriff

Übersicht

Der AzerothCore-Server (CT119) hat drei Admin-Zugangswege:

Methode Zugriff Für was
In-Game WoW-Client als GM-Account Einfachste Methode für GM-Commands
SSH → Systemd ssh root@192.168.178.89 Logs, Service-Neustart, Config-Änderungen
SOAP 127.0.0.1:7878 (nur intern) Automatisierung, Scripts

SSH-Zugang (CT119)

# Von Proxmox-Host:
ssh root@192.168.178.89

# Oder direkt per pct exec (von Proxmox):
pct exec 119 -- bash -c "systemctl status acore-world"

Services verwalten

# Status prüfen:
systemctl status acore-auth
systemctl status acore-world

# Neustarten:
systemctl restart acore-auth
systemctl restart acore-world

# Stoppen / Starten:
systemctl stop acore-world
systemctl start acore-world

Reihenfolge: Bei Neustart zuerst acore-world stoppen, dann acore-auth. Starten in umgekehrter Reihenfolge.


Logs anzeigen

# Live-Log (Worldserver):
journalctl -u acore-world -f

# Letzten 100 Zeilen:
journalctl -u acore-world -n 100

# Log-Datei direkt (schneller bei vielen Einträgen):
tail -f /opt/azerothcore/logs/Server.log

# Fehler filtern:
journalctl -u acore-world -p err -n 50

SOAP-Interface

Der Worldserver stellt einen SOAP XML-RPC-Endpunkt auf 127.0.0.1:7878 bereit.
Credentials = Admin-Account (Login: admin, PW in /root/acore-credentials.txt).

SOAP per PHP (einfachste Methode):

# In CT119 als root – beliebigen GM-Command ausführen:
php -r "
\$c = new SoapClient(null, [
  'location' => 'http://127.0.0.1:7878/',
  'uri'      => 'urn:AC',
  'style'    => SOAP_RPC,
  'login'    => 'admin',
  'password' => 'ADMINPASS'
]);
echo \$c->executeCommand(new SoapParam('.server info', 'command'));
"

SOAP per curl:

curl -s -u admin:ADMINPASS \
  -H "Content-Type: text/xml" \
  -d '<?xml version="1.0"?>
<methodCall>
  <methodName>execute</methodName>
  <params>
    <param><value><string>.server info</string></value></param>
  </params>
</methodCall>' \
  http://127.0.0.1:7878/

Wichtig: Der SOAP-Port ist nur auf 127.0.0.1 gebunden – kein externer Zugriff möglich.


Direkte MySQL-Konsole

# In CT119 als root:
mysql -u root

# Direkte Abfragen:
USE acore_auth;
SELECT username, last_login FROM account ORDER BY last_login DESC LIMIT 10;

USE acore_characters;
SELECT name, level, class, race FROM characters WHERE online=1;

# Account-GM-Level setzen (direkt in DB):
UPDATE acore_auth.account_access SET SecurityLevel=3 WHERE id=(
  SELECT id FROM acore_auth.account WHERE username='SPIELERNAME'
);

Config neu laden (ohne Neustart)

# In-Game oder per SOAP:
.reload config       # worldserver.conf neu laden
.reload all          # Alle Configs (langsamer)

Nicht alle Einstellungen können live neu geladen werden – XP-Rates, Bot-Anzahl und DB-Verbindungen brauchen einen Neustart.


CPU-Last reduzieren

Falls der Server zu viel CPU verbraucht (häufig durch journald bei vielen Log-Einträgen):

# worldserver nice-Level erhöhen (niedrigere Priorität):
renice 10 $(pgrep worldserver)

# Console-Logging in worldserver.conf reduzieren:
# Logger.root = 3,Console Server   →   Logger.root = 2,Server
# Dann: systemctl restart acore-world

Passwort ändern

Für den Admin-Account nutzt AzerothCore SHA1 SRP6 (WotLK-kompatibel).

Über SOAP (funktioniert NUR ohne " im Passwort):

php -r "
\$c = new SoapClient(null, ['location'=>'http://127.0.0.1:7878/','uri'=>'urn:AC','style'=>SOAP_RPC,'login'=>'admin','password'=>'ALTESPASSWORT']);
echo \$c->executeCommand(new SoapParam('.account set password admin ALTESPASSWORT NEUESPASSWORT NEUESPASSWORT', 'command'));
"

Direkt per Python (wenn Sonderzeichen im PW):

#!/usr/bin/env python3
import hashlib, os, struct

username = "ADMIN"   # Immer UPPERCASE
password = "NEUESPASSWORT"   # Immer UPPERCASE

N = int.from_bytes(bytes.fromhex(
    '894B645E89E1535BBDAD5B8B290650530801B18EBFBF5E8FAB3C82872A3E9BB7'), 'big')
g = 7

salt_bytes = os.urandom(32)
h1 = hashlib.sha1((username.upper() + ':' + password.upper()).encode()).digest()
x_bytes = hashlib.sha1(salt_bytes + h1).digest()
x = int.from_bytes(x_bytes, 'little')
verifier = pow(g, x, N).to_bytes(32, 'little')

salt_hex = salt_bytes.hex().upper()
verifier_hex = verifier.hex().upper()

print(f"""UPDATE acore_auth.account
SET salt=0x{salt_hex}, verifier=0x{verifier_hex}
WHERE username='{username}';""")
python3 srp6_pass.py | mysql -u root

Danach auch SOAP-Passwort in FusionCMS-DB aktualisieren:

mysql -u root fusioncms -e "UPDATE realms SET console_password='NEUESPASSWORT' WHERE id=1;"

FusionCMS Web-Panel

  • URL: https://panel.ls-cloud.biz
  • Login: admin / Passwort aus /root/acore-credentials.txt
  • GM-Commands über FusionCMS: Nur vordefinierte Aktionen (Kick, Ban, Item senden) — kein freies Command-Eingabefeld!

Das Panel nutzt SOAP intern. SOAP-Credentials entsprechen dem Admin-Account.


Verwandte Seiten